/******************************************************************************* * Copyright (c) 2011 Subgraph. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Subgraph - initial API and implementation ******************************************************************************/ package com.subgraph.vega.ui.http.proxy; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.ICheckStateProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import com.subgraph.vega.api.scanner.modules.IEnableableModule; import com.subgraph.vega.api.scanner.modules.IResponseProcessingModule; import com.subgraph.vega.api.scanner.modules.IScannerModule; import com.subgraph.vega.ui.http.dialogs.IConfigDialogContent; public class ConfigureProxyModulesContent implements IConfigDialogContent, ICheckStateListener, ICheckStateProvider { private final List<IResponseProcessingModule> modules; private Composite composite; private CheckboxTableViewer viewer; public ConfigureProxyModulesContent(List<IResponseProcessingModule> modules) { this.modules = modules; } @Override public Composite createContents(Composite parent) { composite = new Composite(parent, SWT.NONE); final GridLayout layout = new GridLayout(); layout.marginHeight = 10; layout.verticalSpacing = 20; composite.setLayout(layout); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); viewer = CheckboxTableViewer.newCheckList(composite, SWT.NONE); viewer.setCheckStateProvider(this); viewer.addCheckStateListener(this); viewer.setContentProvider(new ArrayContentProvider()); viewer.setLabelProvider(new LabelProvider() { public String getText(Object element) { if(element instanceof IScannerModule) { return ((IScannerModule) element).getModuleName(); } else { return super.getText(element); } } }); viewer.setInput(modules); viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); composite.layout(); return composite; } @Override public String getTitle() { return "Configure Response Processing Modules for Proxy"; } @Override public String getMessage() { return "Choose which response processing modules will be enabled to process responses received by the HTTP proxy"; } @Override public Control getFocusControl() { return composite; } @Override public void onClose() { } @Override public void onOk() { } @Override public boolean isChecked(Object element) { if(element instanceof IEnableableModule) { IEnableableModule module = (IEnableableModule) element; return module.isEnabled(); } return false; } @Override public boolean isGrayed(Object element) { return false; } @Override public void checkStateChanged(CheckStateChangedEvent event) { if(event.getElement() instanceof IEnableableModule) { IEnableableModule module = (IEnableableModule) event.getElement(); module.setEnabled(event.getChecked()); } } }